Applying tags from communication files to users

ABSTRACT

A method, data processing system, and computer program product for associating tags with a person or user. A computer receives a communication file. The computer determines a tag for the communication file to form a communication file association of the tag with the communication file. The computer identifies contact information for a user from the communication file. The computer forms a user association between the user and the tag.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to a computer implementedmethod, data processing system, and computer program product fordistributing tags through communication files. More specifically, thepresent invention relates to use of tags to define the scope ofcommunication files directed to users.

2. Description of the Related Art

Modern uses of networked computers provide tools to author anddistribute communication files. A communication file is a file createdin a manner suitable for access from a server originating with an authoror writer, and targeted for reading or consumption by a recipient orsubscriber. A communication file may be, for example, an email, a webpage or any other file readily suitable for rendering with commonlyavailable clients such as email clients and web browsers. In particular,web pages, often created for mass consumption, are posted or modified onthe Internet by the millions each day. Similarly, in a large corporationor other organization, thousands of emails are circulated, some intendedfor general availability within the company. Accordingly, a user canhave near-limitless access to networks that provide access tocommunication files, many of which may have little or no relevance tothe user's daily activities. In this context, relevance is determinedbased on the tastes of the user.

A way to sort email and web pages, among other communication files,would be helpful for a user to avoid wasting time reading material oflittle interest to the user.

SUMMARY OF THE INVENTION

The present invention provides a computer implemented method and dataprocessing system for associating tags with a person or user. A computerreceives a communication file. The computer determines a tag for thecommunication file to form a communication file association of the tagwith the communication file. The computer identifies contact informationfor a person from the communication file. The computer forms a userassociation between the person and the tag.

In addition, a computer may assign at least one draft tag to thecommunication file, wherein the at least one draft tag is provided by afirst user. The computer solicits at least one additional user tonegotiate a tag set for the communication file, wherein the additionaluser is the person, responsive to identifying contact information for auser. The computer concludes negotiations among the first user and theat least one additional user to form at least one of a tag set selectedfrom the group consisting of an agreed tag set, or a disputed tag set.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the invention are setforth in the appended claims. The invention itself, however, as well asa preferred mode of use, further objectives and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

FIG. 1 is a data processing system in accordance with an illustrativeembodiment of the invention;

FIG. 2 is a user interface for associating tags to communication filessuch as emails in accordance with an illustrative embodiment of theinvention;

FIG. 3 is a block diagram of the logical relationship of the clients,the server and messages in accordance with an illustrative embodiment ofthe invention;

FIG. 4 is a flowchart that a server may perform to mediate negotiationof a tag set for an email in accordance with an illustrative embodimentof the invention;

FIG. 5 is a flowchart to determine distribution of an email through theuse of tags associated with a user in accordance with an illustrativeembodiment of the invention; and

FIG. 6 is a flowchart for determining additional distribution for anemail having a tag, in accordance with an illustrative embodiment of theinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

With reference now to the figures and in particular with reference toFIG. 1, a block diagram of a data processing system is shown in whichaspects of an illustrative embodiment may be implemented. Dataprocessing system 100 is an example of a computer, in which code orinstructions implementing the processes of the present invention may belocated. In the depicted example, data processing system 100 employs ahub architecture including a north bridge and memory controller hub(NB/MCH) 102 and a south bridge and input/output (I/O) controller hub(SB/ICH) 104. Processor 106, main memory 108, and graphics processor 110connect to north bridge and memory controller hub 102. Graphicsprocessor 110 may connect to the NB/MCH through an accelerated graphicsport (AGP), for example.

In the depicted example, local area network (LAN) adapter 112 connectsto south bridge and I/O controller hub 104 and audio adapter 116,keyboard and mouse adapter 120, modem 122, read only memory (ROM) 124,hard disk drive (HDD) 126, CD-ROM drive 130, universal serial bus (USB)ports and other communications ports 132, and PCI/PCIe devices 134connect to south bridge and I/O controller hub 104 through bus 138 andbus 140. PCI/PCIe devices may include, for example, Ethernet adapters,add-in cards, and PC cards for notebook computers. PCI uses a card buscontroller, while PCIe does not. ROM 124 may be, for example, a flashbinary input/output system (BIOS). Hard disk drive 126 and CD-ROM drive130 may use, for example, an integrated drive electronics (IDE) orserial advanced technology attachment (SATA) interface. A super I/O(SIO) device 136 may be connected to south bridge and I/O controller hub104.

An operating system runs on processor 106, and coordinates and providescontrol of various components within data processing system 100 inFIG. 1. The operating system may be a commercially available operatingsystem such as Microsoft® Windows® XP. Microsoft and Windows aretrademarks of Microsoft Corporation in the United States, othercountries, or both. An object oriented programming system, such as theJava™ programming system, may run in conjunction with the operatingsystem and provides calls to the operating system from Java™ programs orapplications executing on data processing system 100. Java™ is atrademark of Sun Microsystems, Inc. in the United States, othercountries, or both.

Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as hard disk drive 126, and may be loaded into main memory 108 forexecution by processor 106. The processes of the present invention canbe performed by processor 106 using computer implemented instructions,which may be located in a memory such as, for example, main memory 108,read only memory 124, or in one or more peripheral devices.

Those of ordinary skill in the art will appreciate that the hardware inFIG. 1 may vary depending on the implementation. Other internal hardwareor peripheral devices, such as flash memory, equivalent non-volatilememory, and the like, may be used in addition to or in place of thehardware depicted in FIG. 1. In addition, the processes of theillustrative embodiments may be applied to a multiprocessor dataprocessing system.

In some illustrative examples, data processing system 100 may be apersonal digital assistant (PDA), which is configured with flash memoryto provide non-volatile memory for storing operating system files and/oruser-generated data. A bus system may be comprised of one or more buses,such as a system bus, an I/O bus and a PCI bus. Of course, the bussystem may be implemented using any type of communications fabric orarchitecture that provides for a transfer of data between differentcomponents or devices attached to the fabric or architecture. Acommunication unit may include one or more devices used to transmit andreceive data, such as a modem or a network adapter. A memory may be, forexample, main memory 108 or a cache such as found in north bridge andmemory controller hub 102. A processing unit may include one or moreprocessors or CPUs. The depicted example in FIG. 1 is not meant to implyarchitectural limitations. For example, data processing system 100 alsomay be a tablet computer, laptop computer, or telephone device inaddition to taking the form of a PDA.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an”, and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below are intended toinclude any structure, material, or act for performing the function incombination with other claimed elements as specifically claimed. Thedescription of the present invention has been presented for purposes ofillustration and description, but is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the artwithout departing from the scope and spirit of the invention. Theembodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The aspects of the illustrative embodiments provide a computerimplemented method, data processing system, and computer program productfor assigning tags to communication files, and distributing thecommunication files among users. The illustrative embodiments may usethe communication files to associate a person with one or more tags. Atag is a string or other word comprised at least of alpha-numericcharacters that identifies a topic, subject area, condition or otherattribute of a communication file. The tag can be used to associate aperson with topics that interest the person, or as an attribute toidentify the person, such as “tall”, “dark”, and “bearded”. A person isa human being, which can be referred to within a communication file. Auser is a person who relies on a computer to perform data processingfunctions. Some people may be users, while others may not be users.Illustrative embodiments can provide ways for users to understandattributes and interests of a person, among other things.

FIG. 2 is a user interface for associating tags to communication filessuch as emails in accordance with an illustrative embodiment of theinvention. Emails, once distributed, may be presented to users who aresolicited for their input. Presentation may occur at the time of sendingor later, such as when a solicited user reads the distributed email. Auser may enter input by indicating a level of agreement that a user haswith respect to a particular tag being assigned to a particular email.In addition, a user may suggest additional tags to be voted onconcerning the suitability of the additional tag to be assigned theemail.

Accordingly, an author to an email may use a client to transmit theemail to a server. The server, in response, can direct the email and asolicitation to some or all of the email recipients. The solicitationmay be rendered to the display of each solicited recipient assolicitation window 200. Once the solicited recipients receive thesolicitation, the recipients and the author form a group called voters.

Solicitation window 200 may dynamically show draft tags 201 in a mannerthat communicates to each voter the current status of the words, as wellas a deadline that may count down a duration before the voting closes. Adraft tag is a tag assigned to a communication file such as an email andis offered to recipients as a tag to negotiate agreement. A draft tagset is the tag set that includes all tags entered by the author of theemail, if any, and all tags suggested by the recipients solicited forvotes. An additional draft tag may be the tags added by a second oradditional user. Similarly, the additional draft tag may be a tag addedby the email's author after the author sends the email. Similarly, theadditional draft tag may be a tag suggested by a program after parsingthe previous tags and the sent email and comparing to a repository ofco-occurring tags. Furthermore, the solicitation window shows an email251 in a manner to allow voters to judge the content of the email andtrigger the human intuition that is associated with selecting tags. Atthe conclusion of a voter's interest in the solicitation, the voter mayselect or click on commit button 209 to register that their vote isfinalized.

Accordingly, the solicitation window may be rendered by a client. Theclient is a computer that executes instructions according to a dataprocessing system, e.g., data processing system 100 of FIG. 1. Thesolicitation window provides at least two ways for a user to influencethe tags being voted upon. First, the solicitation window provides avoting control for each draft tag. Second, the solicitation windowprovides a field or other input means for the user to suggest anadditional tag for voting.

A voting control can be, for example, disagree/agree voting control 221.Each voting control permits a user to enter, for example, by usingpoints and clicks, a vote corresponding to the tag with respect to theemail. The voting control may have labels that are rendered to thescreen that permit the control, in this case, a slider feature, to beadjusted according to the tastes of the voter. The voting control mayallow a user to enter gradations of agreement, in this case, fiveagreement levels are provided for each voting control. Accordingly, aselectable level of agreement is one of at least two choices thatmeasure a degree to which the user is agreed with the association of atag with an email or other communication file. Each vote can betentative until a user signals that he will commit the votes, or untilvoting closes. The user may signal commitment by clicking a button, forexample, commit button 209. A user-selectable button to submit tags fornegotiation is a button that allows a user to signal, via a userinterface, a desire to submit tags, and optionally concludenegotiations.

Additional tag field 225 may be used by the client to receivesuggestions from a voter for inclusion as a tag associated with theemail. The field allows text entry of the user and the voter tocommunicate the tag, via a client, to a server. The server, in turn, maytransmit the new term within a re-rendered solicitation transmitted toall voters. Each client may render the solicitation windows to add anadditional voting control for the new draft tag. The server may set aninitial vote for a voter to be an arbitrary level or a preset level.Alternatively, each client may set the initial vote in a mannerprescribed by the user of each client.

The client may re-arrange the order of draft tags 201 to respond toadjustments in voting controls made through each client. Such changes inthe order may respond to signals from the clients that update the votes.The server can direct the changes by transmitting refreshed solicitationcontent to each client. A description of the ordering is describedfurther below.

FIG. 3 is a block diagram of the logical relationship of the clients,the server and messages in accordance with an illustrative embodiment ofthe invention. Initially, an email author may dispatch email 301 thatsolicits votes to the server 305. The author may rely upon client 303 tosend the solicitation, updated votes, as well as receive feedback.

The email author may have two peers who rely upon client 307 and client309 to receive and process solicitations and votes. Accordingly, server305 may send the email with a solicitation to each user. Each client,under control of their respective user or voter, dispatches vote toserver 305. At the conclusion of a deadline, or when all voters havecommitted their votes, or when a pre-specified number of voters havecommitted their votes, server 305 may determine a tag set that is eitheran agreed tag set, or a disputed tag set. An agreed tag set is a tag seton which all voters agree, or a set of tags where each tag has accruedvotes that are within a reasonable tolerance, each vote to the other, asto a level of agreement. A disputed tag set is a set of tags where atleast one tag has divergent votes where the votes either do not countthe same, or the votes are outside the reasonable tolerance as to levelof agreement. An agreement level is a setting for a tag assigned to aspecific user to indicate a level to which the user manifests agreementfor assigning the tag to a communication file such as an email. The usermay manifest agreement by actively changing or setting an agreementlevel through a user interface, or by passively accepting a proposedagreement level.

The votes that the server collects, either by active user inputs, orpassive user defaults, may be such that the votes for a tag do notdiverge. A vote of the first user and the vote of the second oradditional user do not diverge when both votes are neutral or at leastmildly agree. A vote of the first user and the vote of the additionaluser do not diverge when both votes are neutral or at most mildlydisagree.

FIG. 4 is a flowchart that a server may perform to mediate negotiationof a tag set for an email in accordance with an illustrative embodimentof the invention. Initially, the server may receive an email with drafttags (step 401). The server may be, for example, server 301 of FIG. 3implemented by data processing system 100 of FIG. 1. Next, the servermay identify recipients by contact information (step 403). The contactinformation can be emails placed in a to-attribute of the email. Next,the server may associate recipients to tags by adding recipients tovoters (step 405). A setting to the server can be that all recipientsare to be solicited for votes. However, an administrator to the servercan associate attributes with users or each user's email that states apolicy with respect to that user. Accordingly, the server may selectonly those recipients that satisfy the policy previously set. Forexample, employees of a company with specified attributes may bedetermined, accordingly, to be solicited as voters. In contrast,employees without the specified attributes may not be solicited forinputs related to tags. For another example, half of the employees of acompany may be solicited as voters only during the first half of theyear while the other half of the employees may be solicited as votersonly during the second half of the year.

Next, the server may transmit to voters the email and solicitation witha deadline (step 407). The server may transmit the solicitation byembedding attributes of the solicitation as commands in the email, suchas in hidden header fields, to be processed by the voters' emailclients. Alternatively, the server may transmit the solicitationseparate from the email to be processed by a dedicated votersolicitation client. Alternatively, an email client may query asolicitation service for the existence and, if applicable, attributes ofa solicitation pertinent to the user. The email client or dedicatedvoter solicitation client may present the user with a batch of pendingsolicitations in a single interface rendered upon user request, at aspecified time, or upon an event trigger. Alternatively, the user may bepresented with any pending solicitations in a sequential queue interfacerendered upon user request, at a specified time, or upon an eventtrigger, including the moment an email and solicitation is received.Alternatively, the user may be presented with a pending solicitation foran email being opened or previewed by the user. The presentation may bein the form of an interface such as solicitation window 200 in FIG. 2,optionally preceded by a message such as, “You have a pending tag tovote on. Click OK to vote or Cancel to not vote.”, and optionallydisplayed in a status bar message or other window location, such as,“You have 5 tags to vote on in 2 emails. Click Tags if you would like tovote.”

Next, the server may set the state of voting to “agreed” (step 408). Astate of “agreed” can be a default state that is determined if allvoters refrain from voting or no changed votes are received at theserver. Next, the server may determine if the deadline continues pending(step 409). In other words, a determination is made whether there istime left unexpired before the deadline. If time remains for voting, theserver may receive a vote or an additional tag (step 411).

In response to receiving a vote or additional tag, the server maytransmit the vote and/or additional tag to each client for rendering(step 413). Next, the server may determine whether it has received avote commitment (step 415). If a vote commitment has been received, theserver may determine whether two or more voters commit incompatiblevotes (step 417). If two or more voters have committed incompatiblevotes, the server may set the state of voting to disputed (step 418).However, if step 417 is determined negatively, or after step 418, theserver may determine if all voters have committed (step 419). If so, theserver may transmit to recipients negotiations are concluded, andtransmit an agreed tag set or disputed tag set (step 421). Processingmay terminate thereafter.

Negative determinations at steps 415 and 419 may direct the server toresume processing at step 409.

Further processing may propagate for data-mining the agreed tag set orthe disputed tag set. Such a tag set can be mined at the request ofauthorized personnel to produce data regarding term popularity. Anadditional use can be to accumulate statistics concerning the affinitytwo terms may have to each other, as judged by voters in the system.Such an affinity can be stored to a word or term co-occurrence databaseto be used by data processing systems that offer suggestions foradditional popularly co-occurring words.

FIG. 5 is a flowchart to determine distribution of an email through theuse of tags associated with a user in accordance with an illustrativeembodiment of the invention. Initially a computer may receive acommunication file having contact information and tags (step 501). Acommunication file is a file created in a manner suitable for accessfrom a server originating with an author or writer, and targeted forreading or consumption by a recipient or subscriber. A communicationfile may be, for example, an email, a web page, or any other filereadily suitable for rendering with commonly available clients such asemail clients and web browsers. Next, the computer may obtain tags fromthe communication file (step 503). The tags may be, for example,metatags, tags in an email, or any other string that summarizes context.In at least one embodiment, the tags are tags for an email.

Next, the computer may obtain contact information for a user within thecommunication file (step 505). Contact information can include an emailaddress, a user's name, telephone number, and the like. Next, thecomputer may receive a request to add the user's contact information toa contact database (step 507). A contact database is a repository thatstores a name and at least one identifier of an address by which tocontact the person or organization associated with a name. The addresscan be, for example, a telephone number, an Internet address, a streetaddress, among others. In response, the computer may form a contact card(step 509). By forming the contact card, the computer may form anassociation between the user and the tag by associating an email addressto the user. The user request to add the contact information for theuser (apparent in the communication file) can be a mouse input to selecta button corresponding to the communication file. Alternatively, theuser may be offered a menu-operated user interface, whereby the userselects menu functions to indicate a user request to add contactinformation to a contact database, for example, from a web page. Acontact card can be any accepted manner of collecting informationregarding how to contact an individual or organization. An example of acontact card is a vCard.

Next, the computer may add the contact card to a contact database (step511). Next, the computer may receive a second communication file (step513). The second communication file can be, for example, a web page,among others. Next, the computer may determine if the user or a useridentifier corresponding to the user is present in the secondcommunication file (step 514). A presence of the user identifier, forexample, the user's name or email address, can form a positive result tostep 514. A positive determination may cause the computer to look up theuser in the contact database (step 515). If the user is not present inthe second communication file, the computer may repeatedly receivesecond communication files at step 513.

However, if the user is found in the contact database, the computer mayadd one or more tags of the second communication file to the contactcard of the user (step 521). Processing may terminate thereafter.

In some embodiments, step 513 may be modified to query a website thathosts tag associations with users. A website is a data processing systemexecuting computer instructions to respond to Internet requests such hashypertext transfer protocol requests. Accordingly, one method to receivethe second communication file is for the computer to make a user-namebased query or look-up to a website that hosts records for associatingtags to users. Such a website may obtain tags through a community ofusers. In other words, the website may obtain tags by solicitingtag-to-user associations from the public, for example. By obtaining atag coupled to a user in this manner, the tag or tags so obtained can beadded to the contact card at step 521, and periodically updated toreflect changing tag associations present at the website. Accordingly, auser association can be formed within the contact database, through theoperation of locating tags associated with a user's name. The userassociation can be a combination of at least a tag with anidentification of the user as a record. Alternatively, the userassociation can be an association of a user with a vote of approval ordisagreement concerning the matching or associating of a tag to anemail.

Among the uses that the contact database may be put, is that thedatabase may be searched based on tag criteria. For example, a Booleansearch can apply Boolean logic to a user entered one or more tagsentered by users. Accordingly a user can make a request to search basedon a tag. Thus, a client computer can receive the request to searchbased on the tag. Further, the client computer may look-up a user andrender an associated contact card to a display. Processing may terminatethereafter.

FIG. 6 is a flowchart for determining additional distribution for anemail having a tag, in accordance with an illustrative embodiment of theinvention. Thus, subscriber flowchart 600 can be a way to form a userassociation where the user association of a tag to a user is a criterionfor subscribing the user to an electronic communication. Initially, aserver may receive an email associated with at least one tag (step 623).By determining that the email is associated with at least one tag, thecomputer determines that the email satisfies the criteria. The criteria,in this case, is an email having a particular tag or tags. Next, theserver may add a user to the distribution of the email (step 625). Theserver may add the user on the basis of the user email being stored to acontact database that associates the user to the tag. Next, the servermay modify the email (at least as directed to the user) to include anotice of distribution rationale as to the user (step 627). Thedistribution rationale is a message that informs a user the way in whichthe user has been selected for distribution. An example of such amessage may be, “You are receiving this email concerning patents,because your contact information appeared with an email tagged with theterm ‘patent’”.

In response to adding the user to the distribution of the email and/oradding the notice of distribution rationale, the computer may form atag-sourced email. A tag-sourced email is an email where the author ofthe email did not deliberately specify the user located within step 625.Rather, additional steps that reference the tags in contact cardsreferring to the user form the basis for the tag-sourced email'stransmittal. Accordingly, a tag-sourced email is an email that acomputer directed to the recipient based on an apparent interest of therecipient, as expressed in the user-to-tag association.

A risk may be present that the tag-sourcing method can add emailaddresses that are redundant to those initially selected by the emailauthor. Consequently, an illustrative embodiment may delete any emailaddresses that are redundant email addresses. A redundant email addressis an email address that is the same, or equivalent to, another emailaddress on a to-attribute or distribution field of an email.

Next, the server may dispatch the email to the user (step 629).Processing may terminate thereafter.

The aspects of the illustrative embodiments provide a computerimplemented method, data processing system, and computer program productfor assigning tags to communication files, and distributing thecommunication files among users that are associated with such tags.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The invention can take the form of an entirely hardware embodiment, anentirely software embodiment or an embodiment containing both hardwareand software elements. In a preferred embodiment, the invention isimplemented in software, which includes but is not limited to firmware,resident software, microcode, etc.

Furthermore, the invention can take the form of a computer programproduct accessible from a computer-usable or computer-readable mediumproviding program code for use by or in connection with a computer orany instruction execution system. For the purposes of this description,a computer-usable or computer readable medium can be any tangibleapparatus that can contain, store, communicate, propagate, or transportthe program for use by or in connection with the instruction executionsystem, apparatus, or device.

The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid state memory, magnetic tape, a removable computerdiskette, a random access memory (RAM), a read-only memory (ROM), arigid magnetic disk and an optical disk. Current examples of opticaldisks include compact disk-read only memory (CD-ROM), compactdisk-read/write (CD-R/W) and DVD.

A data processing system suitable for storing and/or executing programcode will include at least one processor coupled directly or indirectlyto memory elements through a system bus. The memory elements can includelocal memory employed during actual execution of the program code, bulkstorage, and cache memories, which provide temporary storage of at leastsome program code in order to reduce the number of times code must beretrieved from bulk storage during execution.

Input/output or I/O devices (including but not limited to keyboards,displays, pointing devices, etc.) can be coupled to the system eitherdirectly or through intervening I/O controllers.

Network adapters may also be coupled to the system to enable the dataprocessing system to become coupled to other data processing systems orremote printers or storage devices through intervening private or publicnetworks. Modems, cable modem and Ethernet cards are just a few of thecurrently available types of network adapters.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Theembodiment was chosen and described in order to best explain theprinciples of the invention, the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A computer implemented method for associating tags with a person, themethod comprising: receiving a communication file; determining a tag forthe communication file to form a communication file association of thetag with the communication file; identifying contact information for aperson from the communication file; and forming a user associationbetween the person and the tag.
 2. The computer implemented method ofclaim 2 further comprising: receiving a request to search for usersbased on the tag; and responsive to receiving the request, looking-upthe person and rendering a contact card to a display, and whereinforming the user association further comprises recording the userassociation to the contact card suitable for rendering to a computeroutput device.
 3. The computer implemented method of claim 2, furthercomprising receiving a user request to add the contact information to acontact database, wherein forming the association between the person andthe tag is responsive to receiving the user request and furthercomprises associating an email address to the person.
 4. The computerimplemented method of claim 1, wherein the user association is acriteria for subscribing the person to an electronic communicationshaving at least one matching tag.
 5. The computer implemented method ofclaim 4, further comprising: receiving an email satisfying the criteria,responsive to a sender entering the tag into the email; responsive toreceiving the email satisfying the criteria, adding an indication in theemail to form a tag-sourced email for a user to which the email isdirected that the user is subscribed to the email on the basis of thecommunication file association; and dispatching the tag-sourced email tothe user.
 6. The computer implemented method of claim 5, whereinreceiving an email further comprises removing a redundant email addressfrom the email.
 7. The computer implemented method of claim 1, whereindetermining a tag for the communication file comprises: assigning atleast one draft tag to the communication file, wherein the at least onedraft tag is provided by a first user; soliciting at least oneadditional user to negotiate a tag set for the communication file,wherein the second user is the person, responsive to identifying contactinformation for the person; and concluding negotiations between thefirst user and the at least one additional user to form at least one ofa tag set selected from the group consisting of an agreed tag set, or adisputed tag set.
 8. The computer implemented method of claim 7, whereinsoliciting the at least one additional user further comprises:presenting draft tags to the second user, each draft tag having at leasttwo selectable agreement levels; and receiving a selection of at leastone selectable agreement level for each draft tag from the at least oneadditional user.
 9. The computer implemented method of claim 8, themethod further comprising; responsive to a determination of an agreedtag set, forming the agreed tag set; and presenting the agreed tag setas an agreed tag set to the first user and the at least one additionaluser, wherein the agreed tag set is determined based on the first userand the at least one additional user placing selectable agreement levelsfor a subset of an agreed tag set above a threshold for some tags. 10.The computer implemented method of claim 9, wherein agreed tag set isdetermined based on the user placing selectable agreement levels fortags other than the subset below the threshold.
 11. The computerimplemented method of claim 9, wherein the agreed tag set comprises tagsthat each correspond to votes of the first user and the at least oneadditional user, wherein the vote of the first user and the vote of thesecond user do not diverge.
 12. The computer implemented method of claim8, further comprising receiving an additional draft tag from a seconduser to add to the draft tag set.
 13. The computer implemented method ofclaim 8, further comprising ranking the tags in the draft tag set toshow an order to which tags have accrued agreement from users as awhole, wherein the users comprise at least an email author and thesecond user.
 14. A computer implemented method for associating tags witha person, the method comprising: receiving a communication file, whereinthe communication file is an email; identifying contact information fora person from the communication file; determining a tag for thecommunication file to form a communication file association of the tagwith the communication file, wherein determining comprises: assigning atleast one draft tag to the communication file, wherein the at least onedraft tag is provided by a first user; soliciting at least oneadditional user to negotiate a tag set for the communication file,wherein the second user is the person, responsive to identifying contactinformation for a user; and concluding negotiations among the first userand the at least one additional user to form at least one of a tag setselected from the group consisting of an agreed tag set, or a disputedtag set; and forming a user association between the person and the tag.15. A computer program product for associating tags with a person, thecomputer program product comprising: a computer readable storage mediumhaving computer readable program code embodied therewith, the computerreadable program code comprising: computer readable program codeconfigured to receive a communication file; computer readable programcode configured to determine a tag for the communication file to form acommunication file association of the tag with the communication file;computer readable program code configured to identify contactinformation for a person from the communication file; and computerreadable program code configured to form a user association between theperson and the tag.
 16. The computer program product of claim 15,wherein the user association is recorded to a contact card suitable forrendering to a computer output device, the method further comprising:computer readable program code configured to receive a request to searchfor users based on the tag; computer readable program code configured tolook-up the person and rendering the contact card to a display,responsive to receiving the request; and computer readable program codeconfigured to receive a user request to add the contact information to acontact database, wherein forming the association between the person andthe tag is responsive to receiving the user request and furthercomprises associating an email address to the person.
 17. The computerprogram product of claim 15, further comprising: computer readableprogram code configured to receive an email satisfying the criteria,responsive to a sender entering the tag into the email, whereinreceiving an email further comprises removing a redundant email addressfrom the email; computer readable program code configured to add anindication in the email to form a tag-sourced email for a user to whichthe email is directed that the user is subscribed to the email on thebasis of the communication file association, responsive to receiving theemail satisfying the criteria; and computer readable program codeconfigured to dispatch the tag-sourced email to the user, wherein theuser association is a criteria for subscribing the person to anelectronic communications having at least one matching tag.
 18. Thecomputer program product of claim 15, wherein computer readable programcode configured to determine a tag for the communication file comprises:computer readable program code configured to assign at least one drafttag to the communication file, wherein the at least one draft tag isprovided by a first user; computer readable program code configured tosolicit at least one additional user to negotiate a tag set for thecommunication file, wherein the second user is the user, responsive toidentifying contact information for a user; and computer readableprogram code configured to conclude negotiations among the first userand the at least one additional user to form at least one of a tag setselected from the group consisting of an agreed tag set, or a disputedtag set.
 19. The computer program product of claim 18, wherein computerreadable program code configured to solicit the at least one additionaluser further comprises: computer readable program code configured topresent draft tags to the additional user each draft tag having at leasttwo selectable agreement levels; and computer readable program codeconfigured to receive a selection of at least one selectable agreementlevel for each draft tag from the at least one additional user, whereinthe agreed tag set is determined based on the user placing selectableagreement levels for tags other than the subset below the threshold;computer readable program code configured to rendering a user-selectablebutton to submit tags for negotiation.
 20. The computer program productof claim 19, the method further comprising; computer readable programcode configured to form the agreed tag set, responsive to adetermination of an agreed tag set; and computer readable program codeconfigured to present the agreed tag set as an agreed tag set to theusers, wherein the agreed tag set is determined based on the user andthe at least one additional user placing selectable agreement levels fora subset of an agreed tag set above a threshold for some tags.
 21. Acomputer system for associating tags with a person, the systemcomprising: a central processing unit (CPU); a computer readable memory;a computer readable storage medium containing program instructions;first program instructions to receive a communication file; secondprogram instructions to determine a tag for the communication file toform a communication file association of the tag with the communicationfile; and third program instructions to identify contact information fora person from the communication file identify contact information for aperson from the communication file; fourth program instructions to forma user association between the person and the tag; and wherein thefirst, second, third, and fourth program instructions are stored on thecomputer readable storage medium for execution by the central processingunit (CPU) via the computer readable memory.
 22. The computer system ofclaim 21, wherein the user association is recorded to a contact cardsuitable for rendering to a computer output device, the computer systemfurther comprising: fifth program instructions to receive a request tosearch for users based on the tag; sixth program instructions to look-upthe person and rendering the contact card to a display, responsive toreceiving the request; and seventh program instructions to receive auser request to add the contact information to a contact database,wherein forming the association between the person and the tag isresponsive to receiving the user request and further comprisesassociating an email address to the person; and wherein the fifth,sixth, and seventh program instructions are stored on the computerreadable storage medium for execution by the central processing unit(CPU) via the computer readable memory.
 23. The computer system of claim21, the computer system further comprising: fifth program instructionsto receive an email satisfying the criteria, responsive to a senderentering the tag into the email, wherein receiving an email furthercomprises removing a redundant email address from the email; sixthprogram instructions to add an indication in the email to form atag-sourced email for a user to which the email is directed that theuser is subscribed to the email on the basis of the communication fileassociation, responsive to receiving the email satisfying the criteria;and seventh program instructions to dispatch the tag-sourced email tothe user, wherein the user association is a criteria for subscribing theperson to an electronic communications having at least one matching tag;and wherein the fifth, sixth, and seventh program instructions arestored on the computer readable storage medium for execution by thecentral processing unit (CPU) via the computer readable memory.
 24. Thecomputer system of claim 21, wherein the second program instructions todetermine a tag for the communication file comprises: fifth programinstructions to assign at least one draft tag to the communication file,wherein the at least one draft tag is provided by a first user; sixthprogram instructions to solicit at least one additional user tonegotiate a tag set for the communication file, wherein the second useris the user, responsive to identifying contact information for a user;and seventh program instructions to conclude negotiations among thefirst user and the at least one additional user to form at least one ofa tag set selected from the group consisting of an agreed tag set, or adisputed tag set; and wherein the fifth, sixth, and seventh programinstructions are stored on the computer readable storage medium forexecution by the central processing unit (CPU) via the computer readablememory.
 25. The computer system of claim 24, wherein the sixth programinstructions to solicit the at least one additional user furthercomprises: eighth program instructions to present draft tags to theadditional user each draft tag having at least two selectable agreementlevels; ninth program instructions to receive a selection of at leastone selectable agreement level for each draft tag from the at least oneadditional user, wherein the agreed tag set is determined based on theuser placing selectable agreement levels for tags other than the subsetbelow the threshold; and tenth program instructions to render auser-selectable button to submit tags for negotiation; and wherein theeighth, ninth, and tenth program instructions are stored on the computerreadable storage medium for execution by the central processing unit(CPU) via the computer readable memory.